import axios from 'axios'
import { Message } from "element-ui"

// 封装错误提示
const Tip = msg => {
    Message({
        showClose: true,
        message: msg,
        type: "warning"
    })
}

/**
 * 创建axios
 */

let serve = axios.create({ timeout: 10000 })

//设置post请求头 json类型用于接收
serve.defaults.headers.post["Content-Type"] = "application/json;charset=UTF-8";


//  设置拦截器
serve.interceptors.request.use(
    config => {
        /**
         * config 拦截的相关信息
         * config.headers 中查看获取
         */
        return config
    },
    error => Promise.error(error)
)

//封装不同的状态码 对应提示不同信息
const errorHandle = status => {
    switch (status) {
        // 401 未登录状态 跳转登录页
        case 401:
            break;
        //403 token 过期 清楚token 并且跳转登录页 目前没有token
        case 403:
            break;
        case 404:
            Tip("服务器错误,请求资源不存在")
            break;
    }
}

// 响应拦截器

serve.interceptors.response.use(
    //请求成功
    res => (res.status === 200 ? Promise.resolve(res) : Promise.reject(res)),
    //请求失败
    error => {
        const { response } = error;
        if (response) {
            //请求已发出但是不在2xx的范围之内 response.data.message是后端返回的错误信息
            errorHandle(response.status, response.data.message)
            return Promise.reject(response)
        }
    }
)

export default serve